const path=require('path');
const fs=require('fs');
// //读取文件
// //读取文件内容
// function getFileContent(filename,callback){
//     //__dirname获取目录所在的全局路劲,拼接出全局路径
//     const fullFilename=path.resolve(__dirname,'promise-demo',filename);
//     //结果通过回调函数接受
//     fs.readFile(fullFilename,(err,data)=>{
//         if(err){
//             console.log(err);
//             return;
//         }
//         //二进制转字符串,parse转js对象，stringify转json对象
//         //console.log(JSON.parse(data.toString()));
//        callback(JSON.parse(data.toString()));
//     })
// }
// //但是会造成回调地狱
// getFileContent('a.json',(aData)=>{
//     console.log('aData',aData);
//     getFileContent((aData.next),(bData)=>{
//      console.log('bData',bData);
//      }
// });

//使用promise实现
function getFileContent(filename){
    const promise=new Promise((resolve,reject)=>{
        const fullFilename=path.resolve(__dirname,'promise-demo',filename);
        fs.readFile(fullFilename,(err,data)=>{
            if(err){
                reject(err);
                return ;
            }
            resolve(JSON.parse(data.toString()));
        })
    })
    return promise;
}
//返回一个promise，然后使用promise的then函数
//层层嵌套，防止回调函数的嵌套,then会等前面的数据执行完再执行then中的代码，避免了数据还没接受完就执行的情况
//在处理POST请求是时候，就是一种异步的情况
getFileContent('a.json').then((aData)=>{
    console.log(aData);
    return getFileContent(aData.next);
}).then((bData)=>{
    console.log(bData);
});